package com.arpa.wms.common.ess;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 请求面单列表
 * </p>
 *
 * @author SWT
 * @since 2021-07-13
 */
@Data
public class TradeOrderInfoDto {

    @ApiModelProperty(value = "物流服务值")
    private String logisticsServices;

    @ApiModelProperty(value = "请求ID", required = true, notes = "菜鸟、京东、拼多多都传")
    private String objectId;

    @ApiModelProperty(value = "订单信息")
    private OrderInfoDto orderInfo;

    @ApiModelProperty(value = "包裹信息")
    private PackageInfoDto packageInfo;

    @ApiModelProperty(value = "收件人信息")
    private UserInfoDto recipient;

    @ApiModelProperty(value = "云打印标准模板URL")
    private String templateUrl;

    @ApiModelProperty(value = "使用者ID")
    private Long userId;

    @ApiModelProperty(value = "快递产品类型")
    private String productType;

    private TradeOrderInfoDto.GetEbillOrderRequest getEbillOrderRequest;
    @Data
    public static class GetEbillOrderRequest{
        private String merchantCode;
        private Long totalPackageQuantity;
        private String goodsDescription;
        private String packagingDescription;
        private Double totalPackageLength;
        private String packageCode;
        private String expressProductCode;
        private String extData;
        private Boolean hasFreightInsurance;
        private String netSiteName;
        private String expressCompanyCode;
        private Double totalPackageWidth;
        private String orderChannel;
        private Double totalPackageWeight;
        private String tradeOrderRemark;
        private Double totalPackageVolume;
        private Boolean isSignBack;
        private Long payAmount;
        private String merchantName;
        private Integer payMethod;
        private Double totalPackageHeight;
        private String netSiteCode;
        private String tradeOrderCode;
        private String templateUrl;
        private Long reserveTime;
        private String requestId;
        private Long reserveEndTime;
        private String settleAccount;
        private String type;
    }

    private TradeOrderInfoDto.JdWaybillDTO jdWaybillDTO;
    @Data
    public static class JdWaybillDTO{
        private Integer waybillType;
        private Integer waybillCount;
        private Integer providerId;
        private String providerCode;
        private String branchCode;
        private String platformOrderNo;
        private String vendorCode;
        private String vendorName;
        private String vendorOrderCode;
        private String salePlatform;
        private BigDecimal weight;
        private BigDecimal volume;
        private Integer promiseTimeType;
        private Date promiseCompleteTime;
        private BigDecimal goodsMoney;
        private Integer payType;
        private BigDecimal shouldPayMoney;
        private Boolean needGuarantee;
        private BigDecimal guaranteeMoney;
        private String salePlat;
        private String customerCode;
        private String orderId;
        private String thrOrderId;
        private Integer packageCount;
        private String pin;
        //商家结算编码，直营承运商必填
        private String settlementCode;
        //快递费付款方式(顺丰必填)，1:寄方付 2:收方付 3:第三方付
        private String expressPayMethod;
        //快件产品类别，目前顺丰使用，后续可根据承运商自己定义 。1-顺丰标快；2-顺丰特惠
        private String expressType;

    }
}
